home *** CD-ROM | disk | FTP | other *** search
/ The Business Master (3rd Edition) / The Business Master (3rd Edition).iso / files / spreotus / 123fin / buspgm.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  11.4 KB  |  413 lines

  1. 1  KEY(10) ON:ON KEY(10) GOSUB 3
  2. 2   GOTO 5
  3. 3  RUN"MENU.BAT"+CHR$(13)
  4. 5  CLS
  5. 6  LOCATE 23,24:PRINT "Press F10 to EXIT program.
  6. 100  REM -----------------------------
  7. 110  N$=     "BUSINESS PROGRAMS"
  8. 120  REM -----------------------------
  9. 130  GOSUB 6200                       'INITIALIZE
  10. 140  REM SET UP MENU ARRAY
  11. 150  X$(1)="STRAIGHT-LINE DEPRECIATION"
  12. 160  X$(2)="DECLINING-BALANCE DEPRECIATION"
  13. 170  X$(3)="SUM-OF-YEARS'-DIGITS DEPRECIATION"
  14. 180  X$(4)="BREAK-EVEN POINT"
  15. 190  X$(5)="ECONOMIC ORDERING QUANTITY"
  16. 200  X$(6)="SALES PRICE WITH DISCOUNT"
  17. 210  X$(7)="WEIGHTED AVERAGE"
  18. 220  X$(8)="SALESPERSON' COMMISSION"
  19. 230  X$(9)="WAGES WITH OVERTIME"
  20. 240  X$(10)="EXECUTIVE DECISION MAKER"
  21. 250  N=10 : GOSUB 7000                 'DISPLAY MENU
  22. 260  ON X GOSUB 280,500,740,990,1140,1310,1550,1840,2010,2210
  23. 270  Q2$="RUN" : GOSUB 3400 'ASK FOR ANOTHER RUN
  24. 271  IF YN$="N" THEN END ELSE GOTO 100
  25. 280  REM ----------------------------------
  26. 290  N$=    "STRAIGHT-LINE DEPRECIATION"
  27. 300  REM ----------------------------------
  28. 310  GOSUB 6200 : K=1
  29. 320  REM GET INPUT PARAMETERS
  30. 330  Q1$="ENTER DATA" : Q2$=""
  31. 340  Q3$="PRES. BOOK VALUE ($)"     : GOSUB 6600
  32. 350  Q3$="SALVAGE VALUE ($)"        : GOSUB 6600
  33. 360  Q3$="LIFE (YRS) "              : GOSUB 6600
  34. 370  REM PRINT DEPR SCHEDULE
  35. 380  D=(PAR(1)-PAR(2))/PAR(3)
  36. 390  PRINT
  37. 400  PRINT"YEAR     DEPR($)   VALUE($)"
  38. 410  FOR A= 1 TO PAR(3)
  39. 420    PRINT A; TAB(6);
  40. 430    PRINT USING "#######,.##";D,PAR(1)-D*A
  41. 440    IF A <> 12 THEN 470
  42. 450    GOSUB 7400                     'WAIT FOR KEY
  43. 460    LOCATE 8,1                     'RESET POINTER
  44. 470  NEXT A
  45. 480  Q2$="COMPUTE"  : GOSUB 3400      'ASK FOR ANOTHER
  46. 490  IF YN$="N" THEN RETURN ELSE GOTO 280
  47. 500  REM ----------------------------------------
  48. 510  N$=     "DECLINING-BALANCE DEPRECIATION"
  49. 520  REM ----------------------------------------
  50. 530  GOSUB 6200 : K=1
  51. 540  REM GET INPUT PARAMETERS
  52. 550  Q1$="ENTER DATA" : Q2$=""
  53. 560  Q3$="PRES. BOOK VALUE ($)"     : GOSUB 6600
  54. 570  Q3$="LIFE (YRS) "              : GOSUB 6600
  55. 580  Q3$="% ACCEL DEPRECIATION"     : GOSUB 6600
  56. 590  REM PRINT DEPR SCHEDULE
  57. 600  RV=PAR(1)
  58. 610  PRINT
  59. 620  PRINT"YEAR     DEPR($)   VALUE($)"
  60. 630  FOR A= 1 TO PAR(2)
  61. 640    PRINT A; TAB(6);
  62. 650    D=RV*PAR(3)/100/PAR(2)
  63. 660    PRINT USING "#######,.##";D,RV-D
  64. 670    RV=RV-D
  65. 680    IF A <> 12 THEN 710
  66. 690    GOSUB 7400                     'WAIT
  67. 700    LOCATE 8,1
  68. 710  NEXT A
  69. 720  Q2$="COMPUTE"  : GOSUB 3400       'ASK FOR ANOTHER
  70. 730  IF YN$="N" THEN RETURN ELSE GOTO 500
  71. 740  REM -------------------------------------------
  72. 750  N$=     "SUM-OF-YEARS'-DIGITS DEPRECIATION"
  73. 760  REM -------------------------------------------
  74. 770  GOSUB 6200 : K=1
  75. 780  REM GET INPUT PARAMETERS
  76. 790  Q1$="ENTER DATA" : Q2$=""
  77. 800  Q3$="PRES. BOOK VALUE ($)"     : GOSUB 6600
  78. 810  Q3$="SALVAGE VALUE ($)"        : GOSUB 6600
  79. 820  Q3$="LIFE (YRS) "             : GOSUB 6600
  80. 830  REM PRINT DEPR SCHEDULE
  81. 840  D=PAR(1)-PAR(2)
  82. 850  RV=PAR(1)
  83. 860  PRINT
  84. 870  PRINT"YEAR     DEPR($)   VALUE($)"
  85. 880  FOR A= 1 TO PAR(3)
  86. 890    D1=D*(PAR(3)+1-A)/(PAR(3)*(PAR(3)+1)/2)
  87. 900    PRINT A; TAB(6);
  88. 910    PRINT USING "#######,.##";D1,RV-D1
  89. 920    RV=RV-D1
  90. 930    IF A <> 12 THEN 960
  91. 940    GOSUB 7400
  92. 950    LOCATE 8,1
  93. 960  NEXT A
  94. 970  Q2$="COMPUTE"  : GOSUB 3400      'ASK FOR ANOTHER
  95. 980  IF YN$="N" THEN RETURN ELSE GOTO 740
  96. 990  REM ------------------------------
  97. 1000  N$=     "BREAK-EVEN POINT"
  98. 1010  REM ------------------------------
  99. 1020  GOSUB 6200 : K=1
  100. 1030  REM GET INPUT PARAMETERS
  101. 1040  Q1$="ENTER DATA" : Q2$=""
  102. 1050  Q3$="FIXED COSTS ($)"   : GOSUB 6600
  103. 1060  Q3$="COST PER UNIT ($)" : GOSUB 6600
  104. 1070  Q3$="SALES PRICE ($)"   : GOSUB 6600
  105. 1080  PRINT
  106. 1090  PRINT "BREAK-EVEN POINT -> ";
  107. 1100  US=INT(PAR(1)/(PAR(3)-PAR(2))*100+0.5)/100
  108. 1110  PRINT USING "#####,"; US; :PRINT " UNITS"
  109. 1120  Q2$="COMPUTE"  : GOSUB 3400      'ASK FOR ANOTHER
  110. 1130  IF YN$="N" THEN RETURN ELSE GOTO 990
  111. 1140  REM ------------------------------------
  112. 1150  N$=     "ECONOMIC ORDERING QUANTITY"
  113. 1160  REM ------------------------------------
  114. 1170  GOSUB 6200 : K=1
  115. 1180  REM GET INPUT PARAMETERS
  116. 1190  Q1$="ENTER DATA" : Q2$=""
  117. 1200  Q3$="COST TO ORDER ($)"       : GOSUB 6600
  118. 1210  Q3$="ANNUAL UNITS USED "      : GOSUB 6600
  119. 1220  Q3$="UNIT CARRYING COST($)"   : GOSUB 6600
  120. 1230  REM COMPUTE AND PRINT
  121. 1240  PRINT
  122. 1250  EOQ=INT(SQR(2*PAR(1)*PAR(2)/PAR(3)))
  123. 1260  PRINT "    EOQ = ";
  124. 1270  PRINT USING "#####,"; EOQ;
  125. 1280  PRINT " UNITS"
  126. 1290  Q2$="COMPUTE"  : GOSUB 3400      'ASK FOR ANOTHER
  127. 1300  IF YN$="N" THEN RETURN ELSE GOTO 1140
  128. 1310  REM -----------------------------------
  129. 1320  N$=     "SALES PRICE WITH DISCOUNT"
  130. 1330  REM -----------------------------------
  131. 1340  GOSUB 6200 : K=1
  132. 1350  REM GET INPUT PARAMETERS
  133. 1360  Q1$="ENTER DATA" : Q2$=""
  134. 1370  Q3$="RETAIL PRICE ($)"  : GOSUB 6600
  135. 1380  Q3$="DISCOUNT (%)"      : GOSUB 6600
  136. 1390  Q3$="SALES TAX (%)"     : GOSUB 6600
  137. 1400  REM COMPUTE AND PRINT
  138. 1410  PRINT
  139. 1420  PRINT "  PRICE";TAB(24);
  140. 1430  PRINT USING "$$####,.##";PAR(1)
  141. 1440  D=PAR(1)*PAR(2)/100
  142. 1450  PRINT "  DISCOUNT";TAB(24);
  143. 1460  PRINT USING "$$####,.##";D
  144. 1470  T=(PAR(1)-D)*PAR(3)/100
  145. 1480  PRINT "  TAX";TAB(24);
  146. 1490  PRINT USING "$$####,.##";T
  147. 1500  PRINT
  148. 1510  PRINT "TOTAL";TAB(24);
  149. 1520  PRINT USING "$$####,.##";PAR(1)-D+T
  150. 1530  Q2$="COMPUTE"  : GOSUB 3400      'ASK FOR ANOTHER
  151. 1540  IF YN$="N" THEN RETURN ELSE GOTO 1310
  152. 1550  REM ------------------------------
  153. 1560  N$=     "WEIGHTED AVERAGE"
  154. 1570  REM ------------------------------
  155. 1580  DIM D(100,1)
  156. 1590  GOSUB 6200 : K=1
  157. 1600  REM GET INPUT PARAMETERS
  158. 1610  PRINT "ENTER DATA, RETURN WHEN DONE"
  159. 1620  PRINT : PRINT "VALUE      UNITS"
  160. 1630  ND=0
  161. 1640  J=7
  162. 1650  LOCATE J,1 : PRINT "                ";
  163. 1660  LOCATE J,1    : INPUT D(ND,0)
  164. 1670  LOCATE J,12   : INPUT D(ND,1)
  165. 1680  IF D(ND,1)=0 THEN 1720
  166. 1690  ND=ND+1
  167. 1700  J=J+1
  168. 1710  IF J=17 THEN 1640 ELSE 1650
  169. 1720  REM NOW COMPUTE AND PRINT
  170. 1730  AVE=0 : U=0
  171. 1740  FOR I = 0 TO ND-1
  172. 1750    AVE= AVE+D(I,0)*D(I,1)
  173. 1760    U=U+D(I,1)
  174. 1770  NEXT I
  175. 1780  AVE=AVE/U
  176. 1790  LOCATE 16,3
  177. 1800  PRINT "WEIGHTED AVERAGE IS : ";
  178. 1810  PRINT USING "######,"; AVE
  179. 1820  Q2$="COMPUTE"  : GOSUB 3400      'ASK FOR ANOTHER
  180. 1830  IF YN$="N" THEN RETURN ELSE GOTO 1590
  181. 1840  REM ----------------------------------
  182. 1850  N$=     "SALESPERSON'S COMMISSION"
  183. 1860  REM ----------------------------------
  184. 1870  GOSUB 6200 : K=1
  185. 1880  REM GET INPUT PARAMETERS
  186. 1890  Q1$="ENTER DATA" : Q2$=""
  187. 1900  Q3$="MONTHLY DRAW  ($)"   : GOSUB 6600
  188. 1910  Q3$="MONTHLY SALES ($)"   : GOSUB 6600
  189. 1920  Q3$="COMMISSION (%) "     : GOSUB 6600
  190. 1930  REM COMPUTE AND PRINT
  191. 1940  PRINT
  192. 1950  PRINT "COMMISSION EARNED ";TAB(24)
  193. 1960  PRINT USING "$$####,.##";PAR(2)*PAR(3)/100
  194. 1970  PRINT"DUE (LESS DRAW)   ";TAB(24)
  195. 1980  PRINT USING "$$####,.##";PAR(2)*PAR(3)/100-PAR(1)
  196. 1990  Q2$="COMPUTE"  : GOSUB 3400      'ASK FOR ANOTHER
  197. 2000  IF YN$="N" THEN RETURN ELSE GOTO 1840
  198. 2010  REM ------------------------------
  199. 2020  N$=     "WAGES WITH OVERTIME"
  200. 2030  REM ------------------------------
  201. 2040  GOSUB 6200 : K=1
  202. 2050  REM GET INPUT PARAMETERS
  203. 2060  Q1$="ENTER DATA" : Q2$=""
  204. 2070  Q3$="BASE RATE  ($/HR)"      : GOSUB 6600
  205. 2080  Q3$="OT PAY FACTOR"          : GOSUB 6600
  206. 2090  Q3$="BASE HOURS WORKED"      : GOSUB 6600
  207. 2100  Q3$="OT HOURS WORKED"        : GOSUB 6600
  208. 2110  REM COMPUTE AND PRINT
  209. 2120  PRINT
  210. 2130  PRINT "   BASE PAY ";TAB(24)
  211. 2140  PRINT USING "$$####,.##";PAR(1)*PAR(3)
  212. 2150  PRINT "   OT PAY   ";TAB(24)
  213. 2160  PRINT USING "$$####,.##";PAR(1)*PAR(2)*PAR(4)
  214. 2170  PRINT "   TOTAL PAY";TAB(24)
  215. 2180  PRINT USING "$$####,.##";PAR(1)*PAR(3)+PAR(1)*PAR(2)*PAR(4)
  216. 2190  Q2$="COMPUTE" : GOSUB 3400       'ASK FOR ANOTHER
  217. 2200  IF YN$="N" THEN RETURN ELSE GOTO 2010
  218. 2210  REM ----------------------------------
  219. 2220  N$=     "EXECUTIVE DECISION MAKER"
  220. 2230  REM ----------------------------------
  221. 2240  GOSUB 6200 : K=1
  222. 2250  PRINT "PLEASE TYPE YOUR QUESTION"
  223. 2260  PRINT "=>";
  224. 2270  INPUT Q$ : Y=LEN(Q$)
  225. 2280  IF Y < 6 THEN 2300
  226. 2290  Y=INT(Y/2) : GOTO 2280
  227. 2300  ON Y GOTO 2310,2320,2330,2340,2350
  228. 2310  PRINT "NOT ON YOUR LIFE" : GOTO 2360
  229. 2320  PRINT "GO FOR IT !! "    : GOTO 2360
  230. 2330  PRINT "YOU'D BETTER BELIEVE IT" : GOTO 2360
  231. 2340  PRINT "FLIP A COIN !"    : GOTO 2360
  232. 2350  PRINT "MAKE YOUR BREAK- QUICKLY"
  233. 2360  Q2$="ASK A QUESTION"  : GOSUB 3400 'ASK FOR ANOTH
  234. 2370  IF YN$="N" THEN RETURN ELSE GOTO 2210
  235. 3400  REM          "ANOTH"
  236. 3401  ' --------------------------------
  237. 3402  '      ASK FOR ANOTHER RUN
  238. 3403  '
  239. 3404  'THIS ROUTINE ASKS THE USER WHETHER TO CONTINUE
  240. 3405  '
  241. 3406  'CALLING PARAMETERS:
  242. 3407  '    Q2$= STRING TO SPECIFY WHAT OPERATION TO DO
  243. 3408  '
  244. 3409  'RETURNED PARAMETERS:
  245. 3410  '    YN$= A "Y" OR "N" FOR YES OR NO
  246. 3411  '
  247. 3412  ' --------------------------------
  248. 3420  Q1$="WOULD YOU LIKE TO "
  249. 3430  Q3$="AGAIN Y OR N ?"
  250. 3440  GOSUB 5000                       'PRESENT DIALOG
  251. 3450  GOSUB 7800                       'ASK YES OR NO
  252. 3460  RETURN
  253. 5000  REM        "DIALOG"
  254. 5001  ' -------------------------------
  255. 5002  '         DIALOGUE
  256. 5003  '
  257. 5004  'CALLING PARAMETERS:
  258. 5005  '   Q1$,Q2$,Q3$, = QUESTIONS TO DISPLAY
  259. 5006  '
  260. 5007  'RETURNED PARAMETERS:
  261. 5008  '   NONE
  262. 5009  '
  263. 5010  'COMMENT: UNUSED QUESTION STRINGS SHOULD BE SET
  264. 5011  '          TO NULL ("")
  265. 5012  '
  266. 5013  ' -------------------------------
  267. 5020  FOR I= 20 TO 23
  268. 5030   LOCATE I,1
  269. 5040   IF I > 20 THEN 5080
  270. 5050     FOR J= 1 TO 40           'DRAW A BORDER
  271. 5060       PRINT "-";
  272. 5070     NEXT J
  273. 5080   IF I = 21 THEN PRINT Q1$; 'FIRST QUESTION
  274. 5090   IF I = 22 THEN PRINT Q2$; 'SECOND QUESTION
  275. 5100   IF I = 23 THEN PRINT Q3$; 'THIRD QUESTION
  276. 5109  REM RESTORE CURSOR HERE AFTER 3RD QUEST
  277. 5110    CP1=POS(N)
  278. 5120    CP=POS(N)                'CURSOR COLUMN POSITION
  279. 5130    IF CP>40 THEN 5150
  280. 5140     PRINT " "; : GOTO 5120  'ERASE ANY PRIOR INFO
  281. 5149  REM RESTORE CURSOR FOR USER RESPONSE
  282. 5150  LOCATE I,CP1
  283. 5160  NEXT I
  284. 5170  RETURN
  285. 5400  REM         "INCH"
  286. 5401  ' ------------------------------
  287. 5402  '        INPUT CHARACTER
  288. 5403  '
  289. 5404  'CALLING PARAMETERS:
  290. 5405  '   NONE
  291. 5406  '
  292. 5407  'RETURNED PARAMETERS:
  293. 5408  '   CH$=INPUT CHARACTER
  294. 5409  '
  295. 5410  ' ------------------------------
  296. 5420  REM WAIT FOR INPUT CHARACTER
  297. 5430  CH$= INKEY$ : IF CH$="" THEN 5430
  298. 5440  Z=ASC(CH$)
  299. 5450  IF Z < 97 OR Z > 122 THEN 5470
  300. 5460  Z=Z-32
  301. 5470  CH$=CHR$(Z)
  302. 5480  RETURN
  303. 6200  REM            "INIT"
  304. 6201  '----------------------------------
  305. 6202  '         INITIALIZE DISPLAY
  306. 6203  '
  307. 6204  'THIS ROUTINE CLEARS THE SCREEN
  308. 6205  '   AND PRINTS THE PROGRAM TITLE
  309. 6206  'CALLING PARAMETERS:
  310. 6207  '   N$=TITLE OF PROGRAM
  311. 6208  '
  312. 6209  'RETURNED PARAMETERS:
  313. 6210  '   NONE
  314. 6211  '
  315. 6212  ' ----------------------------------
  316. 6220  CLS                                 'CLEAR SCREEN
  317. 6230  PRINT N$    : PRINT                 'TITLE
  318. 6240  KEY OFF
  319. 6250  RETURN
  320. 6600  REM             "INPAR"
  321. 6601  ' --------------------------------
  322. 6602  '         INPUT PARAMETERS
  323. 6603  '
  324. 6604  'CALLING PARAMETERS:
  325. 6605  '   Q1$,Q2$=USER INSTRUCTIONS
  326. 6606  '   Q3$=NAME OF DATA ITEM
  327. 6607  '
  328. 6608  'RETURNED PARAMETERS:
  329. 6609  '   PAR(K)=THE DATA ITEM OBTAINED
  330. 6610  '
  331. 6611  'COMMENT: CALL WITH K=1 FOR FIRST DATA ITEM
  332. 6612  '         K AUTOMATICALLY UPDATED
  333. 6613  '
  334. 6614  ' -------------------------------
  335. 6620  GOSUB 5000                        'ASK QUESTIONS
  336. 6630  INPUT PAR(K)                      'GET VALUE
  337. 6640  REM ECHO QUESTION AND ANSWER
  338. 6650  LOCATE K+2,3
  339. 6660  PRINT Q3$; TAB(24);
  340. 6670  PRINT USING "######,.##"; PAR(K)
  341. 6680  K=K+1
  342. 6690  RETURN
  343. 7000  REM         "MENU"
  344. 7001  ' ------------------------------
  345. 7002  '        MENU PROGRAM
  346. 7003  '
  347. 7004  'THIS PROGRAM DISPLAYS A MENUE
  348. 7005  '  AND CHOOSES A PROGRAM
  349. 7006  'CALLING PARAMETERS:
  350. 7007  '  N= NO. OF MENU ITEMS
  351. 7008  '  X$(I)= ARRAY OF PROGRAM NAMES
  352. 7009  '
  353. 7010  'RETURNED PARAMETERS:
  354. 7011  '  X=PROGRAM NUMBER CHOSEN
  355. 7012  '
  356. 7013  ' ------------------------------
  357. 7020  CLS
  358. 7030  FOR I = 1 TO N               'DISPLAY MENU
  359. 7040    IF I=10 THEN PRINT 0; ELSE PRINT I;
  360. 7050     PRINT  "= " ; X$(I)
  361. 7060  NEXT I
  362. 7070  Q1$="" : Q2$=""
  363. 7080  Q3$="CHOOSE PROGRAM :"
  364. 7085  PRINT:PRINT"     F10 to EXIT program.
  365. 7090  GOSUB 5000                   'ASK QUESTIONS
  366. 7100  GOSUB 5400                   'INPUT CHAR
  367. 7110  X= VAL(CH$)
  368. 7119  REM SEE IF CHAR IN RANGE
  369. 7120  IF X>=1 AND X<=N THEN RETURN
  370. 7130  IF X=0 AND N=10 THEN 7140 ELSE 7150
  371. 7140  X=10 : RETURN
  372. 7150  Q1$="ILLEGAL CHOICE, CHOOSE AGAIN"
  373. 7160  GOSUB 5000
  374. 7170  GOTO 7100
  375. 7400  REM          "PAUSE"
  376. 7401  ' -------------------------------
  377. 7402  '       WAIT FOR ANY KEY
  378. 7403  '
  379. 7404  'THIS ROUTINE WAITS FOR USER TO STRIKE KEY
  380. 7405  '
  381. 7406  'CALLING PARAMETERS:
  382. 7407  '  NONE
  383. 7408  '
  384. 7409  'RETURNED PARAMETERS
  385. 7410  '  NONE
  386. 7411  '
  387. 7412  ' -------------------------------
  388. 7420  Q1$="STRIKE ANY KEY TO CONTINUE"
  389. 7430  Q2$="" : Q3$=""
  390. 7440  GOSUB 5000                        'CALL DIALOG
  391. 7450  X$=INKEY$ : IF X$ = "" THEN 7450  'WAIT FOR KEY
  392. 7460  RETURN
  393. 7800  REM          "YESNO"
  394. 7801  ' -------------------------------
  395. 7802  '            YES-NO
  396. 7803  '
  397. 7804  'CALLING PARAMETERS:
  398. 7805  '  NONE
  399. 7806  '
  400. 7807  'RETURNED PARAMETERS:
  401. 7808  '  YN$= CONTAINS A Y OR N
  402. 7809  '
  403. 7810  ' -------------------------------
  404. 7815  LOCATE 24,40:PRINT" F10 to EXIT program.
  405. 7820  REM WAIT FOR KEY TO BE STRUCK
  406. 7830  YN$=INKEY$ : IF YN$="" THEN 7830
  407. 7840  IF YN$="y" THEN YN$="Y"
  408. 7850  IF YN$="n" THEN YN$="N"
  409. 7860  IF YN$ = "Y" OR YN$ = "N" THEN 7890
  410. 7870  REM NOT YES OR NO TRY AGAIN
  411. 7880  GOTO 7830
  412. 7890  PRINT YN$  :  RETURN
  413.